package com.rc.saas.tenant.model.acct;

import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.rc.saas.tenant.base.BaseModel;
import org.springframework.format.annotation.DateTimeFormat;

import java.math.BigDecimal;
import java.util.Date;

@ExcelIgnoreUnannotated
public class AcctBillOrder extends BaseModel {
    private Long billOrderId;

    private String tenantCode;

    private String tenantOperatorCode;
    @ExcelProperty(value = "结算订单号",index = 0)
    private String billOrderNum;

    private Long contractId;

    private Long acctRuleId;

    private Long elecStationId;

    private Long withdrawApplyId;
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date billStartTime;
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date billEndTime;

    private Date acctDay;
    @ExcelProperty(value = "出账时间",index = 11)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date runTime;
    @ExcelProperty(value = "推送时间",index = 12)
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date pushTime;
    @ExcelProperty(value = "电量",index = 4)
    private BigDecimal totalPower;
    @ExcelProperty(value = "电费",index = 5)
    private BigDecimal totalElecMoney;
    @ExcelProperty(value = "服务费",index = 6)
    private BigDecimal totalSeviceMoney;
    @ExcelProperty(value = "优惠金额",index = 7)
    private BigDecimal totalDiscountMoney;
    @ExcelProperty(value = "总金额",index = 8)
    private BigDecimal totalMoney;
    @ExcelProperty(value = "实付金额",index = 9)
    private BigDecimal payAmount;
//    @ExcelProperty(value = "咨询订单金额",index = 21)
    private BigDecimal consultAmount;
    @ExcelProperty(value = "规则电费",index = 15)
    private BigDecimal billTotalElecMoney;
    @ExcelProperty(value = "规则服务费",index = 16)
    private BigDecimal billTotalSeviceMoney;
    @ExcelProperty(value = "规则总金额",index = 17)
    private BigDecimal billTotalMoney;
//    @ExcelProperty(value = "调整金额",index = 16)
//    private BigDecimal adjustPayAmount;
    @ExcelProperty(value = "调整电费",index = 18)
    private BigDecimal adjustElecAmount;
    @ExcelProperty(value = "调整服务费",index = 19)
    private BigDecimal adjustServiceAmount;

//    @ExcelProperty(value = "最终金额",index = 20)
    private BigDecimal factAmount;
    @ExcelProperty(value = "订单数",index = 3)
    private Integer orderCount;

    private String status;
    @ExcelProperty(value = "调整备注",index = 20)
    private String remark;
    @ExcelProperty(value = "驳回备注",index = 24)
    private String rejectRemark;

    //private BigDecimal diffElecMoney;
    //
    //private BigDecimal diffServiceMoney;

    private String supplyRemark;

    private String createdBy;

    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date createdTime;

    private String lastUpdatedBy;

    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date lastUpdatedTime;

    //public BigDecimal getDiffElecMoney() {
    //    return diffElecMoney;
    //}
    //
    //public void setDiffElecMoney(BigDecimal diffElecMoney) {
    //    this.diffElecMoney = diffElecMoney;
    //}
    //
    //public BigDecimal getDiffServiceMoney() {
    //    return diffServiceMoney;
    //}
    //
    //public void setDiffServiceMoney(BigDecimal diffServiceMoney) {
    //    this.diffServiceMoney = diffServiceMoney;
    //}

    public String getRejectRemark() {
        return rejectRemark;
    }

    public void setRejectRemark(String rejectRemark) {
        this.rejectRemark = rejectRemark;
    }

    public String getSupplyRemark() {
        return supplyRemark;
    }

    public void setSupplyRemark(String supplyRemark) {
        this.supplyRemark = supplyRemark;
    }

    public BigDecimal getConsultAmount() {
        return consultAmount;
    }

    public void setConsultAmount(BigDecimal consultAmount) {
        this.consultAmount = consultAmount;
    }

    public Long getBillOrderId() {
        return billOrderId;
    }

    public void setBillOrderId(Long billOrderId) {
        this.billOrderId = billOrderId;
    }

    public String getTenantCode() {
        return tenantCode;
    }

    public void setTenantCode(String tenantCode) {
        this.tenantCode = tenantCode;
    }

    public String getTenantOperatorCode() {
        return tenantOperatorCode;
    }

    public void setTenantOperatorCode(String tenantOperatorCode) {
        this.tenantOperatorCode = tenantOperatorCode;
    }

    public String getBillOrderNum() {
        return billOrderNum;
    }

    public void setBillOrderNum(String billOrderNum) {
        this.billOrderNum = billOrderNum;
    }

    public Long getContractId() {
        return contractId;
    }

    public void setContractId(Long contractId) {
        this.contractId = contractId;
    }

    public Long getAcctRuleId() {
        return acctRuleId;
    }

    public void setAcctRuleId(Long acctRuleId) {
        this.acctRuleId = acctRuleId;
    }

    public Long getElecStationId() {
        return elecStationId;
    }

    public void setElecStationId(Long elecStationId) {
        this.elecStationId = elecStationId;
    }

    public Long getWithdrawApplyId() {
        return withdrawApplyId;
    }

    public void setWithdrawApplyId(Long withdrawApplyId) {
        this.withdrawApplyId = withdrawApplyId;
    }

    public Date getBillStartTime() {
        return billStartTime;
    }

    public void setBillStartTime(Date billStartTime) {
        this.billStartTime = billStartTime;
    }

    public Date getBillEndTime() {
        return billEndTime;
    }

    public void setBillEndTime(Date billEndTime) {
        this.billEndTime = billEndTime;
    }

    public Date getAcctDay() {
        return acctDay;
    }

    public void setAcctDay(Date acctDay) {
        this.acctDay = acctDay;
    }

    public Date getRunTime() {
        return runTime;
    }

    public BigDecimal getAdjustElecAmount() {
        return adjustElecAmount;
    }

    public void setAdjustElecAmount(BigDecimal adjustElecAmount) {
        this.adjustElecAmount = adjustElecAmount;
    }

    public BigDecimal getAdjustServiceAmount() {
        return adjustServiceAmount;
    }

    public void setAdjustServiceAmount(BigDecimal adjustServiceAmount) {
        this.adjustServiceAmount = adjustServiceAmount;
    }

    public void setRunTime(Date runTime) {
        this.runTime = runTime;
    }

    public Date getPushTime() {
        return pushTime;
    }

    public void setPushTime(Date pushTime) {
        this.pushTime = pushTime;
    }

    public BigDecimal getTotalPower() {
        return totalPower;
    }

    public void setTotalPower(BigDecimal totalPower) {
        this.totalPower = totalPower;
    }

    public BigDecimal getTotalElecMoney() {
        return totalElecMoney;
    }

    public void setTotalElecMoney(BigDecimal totalElecMoney) {
        this.totalElecMoney = totalElecMoney;
    }

    public BigDecimal getTotalSeviceMoney() {
        return totalSeviceMoney;
    }

    public void setTotalSeviceMoney(BigDecimal totalSeviceMoney) {
        this.totalSeviceMoney = totalSeviceMoney;
    }

    public BigDecimal getTotalDiscountMoney() {
        return totalDiscountMoney;
    }

    public void setTotalDiscountMoney(BigDecimal totalDiscountMoney) {
        this.totalDiscountMoney = totalDiscountMoney;
    }

    public BigDecimal getTotalMoney() {
        return totalMoney;
    }

    public void setTotalMoney(BigDecimal totalMoney) {
        this.totalMoney = totalMoney;
    }

    public BigDecimal getPayAmount() {
        return payAmount;
    }

    public void setPayAmount(BigDecimal payAmount) {
        this.payAmount = payAmount;
    }

    public BigDecimal getBillTotalElecMoney() {
        return billTotalElecMoney;
    }

    public void setBillTotalElecMoney(BigDecimal billTotalElecMoney) {
        this.billTotalElecMoney = billTotalElecMoney;
    }

    public BigDecimal getBillTotalSeviceMoney() {
        return billTotalSeviceMoney;
    }

    public void setBillTotalSeviceMoney(BigDecimal billTotalSeviceMoney) {
        this.billTotalSeviceMoney = billTotalSeviceMoney;
    }

    public BigDecimal getBillTotalMoney() {
        return billTotalMoney;
    }

    public void setBillTotalMoney(BigDecimal billTotalMoney) {
        this.billTotalMoney = billTotalMoney;
    }

//    public BigDecimal getAdjustPayAmount() {
//        return adjustPayAmount;
//    }
//
//    public void setAdjustPayAmount(BigDecimal adjustPayAmount) {
//        this.adjustPayAmount = adjustPayAmount;
//    }

    public BigDecimal getFactAmount() {
        return factAmount;
    }

    public void setFactAmount(BigDecimal factAmount) {
        this.factAmount = factAmount;
    }

    public Integer getOrderCount() {
        return orderCount;
    }

    public void setOrderCount(Integer orderCount) {
        this.orderCount = orderCount;
    }

    public String getStatus() {
        return status;
    }

    public void setStatus(String status) {
        this.status = status;
    }

    public String getRemark() {
        return remark;
    }

    public void setRemark(String remark) {
        this.remark = remark;
    }

    public String getCreatedBy() {
        return createdBy;
    }

    public void setCreatedBy(String createdBy) {
        this.createdBy = createdBy;
    }

    public Date getCreatedTime() {
        return createdTime;
    }

    public void setCreatedTime(Date createdTime) {
        this.createdTime = createdTime;
    }

    public String getLastUpdatedBy() {
        return lastUpdatedBy;
    }

    public void setLastUpdatedBy(String lastUpdatedBy) {
        this.lastUpdatedBy = lastUpdatedBy;
    }

    public Date getLastUpdatedTime() {
        return lastUpdatedTime;
    }

    public void setLastUpdatedTime(Date lastUpdatedTime) {
        this.lastUpdatedTime = lastUpdatedTime;
    }
}